/**
 * 
 */
package com.ld.admin.service.oa.work;

import org.springframework.stereotype.Service;

import com.ld.admin.model.oa.work.SysUserRelationModel;
import com.ld.admin.model.system.SystemUser;
import com.ld.shieldsb.common.core.model.Result;
import com.ld.shieldsb.common.core.util.StringUtils;
import com.ld.shieldsb.common.web.BasicService;
import com.ld.shieldsb.common.web.util.Web;
import com.ld.shieldsb.dao.model.PageNavigationBean;
import com.ld.shieldsb.dao.model.QueryModel;

/**
 *
 * @ClassName UserRelationService
 * @author <a href="mailto:1769975326@qq.com" target="_blank">黄升军</a>
 * @date 2019年8月8日上午8:10:55
 */
@Service
public class UserRelationService extends BasicService {

    // 用于子类覆盖，扩展doSearch方法中QueryModel的处理（标准queryModel处理完，查询进行前的处理）
    @Override
    protected QueryModel extendDealQuery(QueryModel queryModel) {
        // TODO Auto-generated method stub
        return super.extendDealQuery(queryModel);
    }

    // 用于子类覆盖，扩展doSearch方法中PageNavigationBean的处理（查询完成后进行）
    @Override
    protected <T> PageNavigationBean<T> extendDealPageNavigationBean(PageNavigationBean<T> pageNavigationBean) {
        // TODO Auto-generated method stub
        return super.extendDealPageNavigationBean(pageNavigationBean);
    }

    // 删除方法子类扩展（删除完成后进行）
    @Override
    protected <T> boolean extendRemove(Boolean flag, Class<T> classOfT, String key, Object value, Integer status, Long userId) {
        // TODO Auto-generated method stub
        return flag;
    }

    // AddOrUpdate扩展（AddOrUpdate方法完成后进行）
    @Override
    protected <T> boolean extendAddOrUpdate(Boolean flag, T modelBean, boolean update, String key, Long userId) {
        // TODO Auto-generated method stub
        return flag;
    }

    /**
     * 添加与修改
     * 
     * @Title addOrUpdate
     * @author 黄升军
     * @date 2019年8月12日 上午10:16:43
     * @param model
     * @param superId
     * @return
     */
    public Result addOrUpdate(SystemUser model, Long superId) {
        SysUserRelationModel relation = new SysUserRelationModel();
        SysUserRelationModel getRelation = getBaseDAO().findById(SysUserRelationModel.class, "userId", model.getId());// 根据用户id获取上下级关系
        boolean flag = false;
        if (getRelation == null) {// 不为空
            relation.setUserId(model.getId());
            relation.setSuperId(superId);
            relation.setCreateBy(Web.Util.getSessionUserId(request));
            flag = getBaseDAO().save(relation);
        } else {// 为空
            if (!getRelation.getSuperId().equals(superId)) {// 得到的父级id与传入的父级id不一致
                flag = getBaseDAO().updateById(SysUserRelationModel.class, getRelation.getId(), "superId", superId);// 根据父级id更新信息
            }
        }
        if (StringUtils.isEmpty(superId)) {// 父级id为空
            getBaseDAO().delete(SysUserRelationModel.class, "userId", model.getId());
        }
        return flag ? Web.Response.success("修改成功") : Web.Response.error("修改失败");

    }
}
